

import * as THREE from 'three';
import { ToolType } from '../../constants/ToolType';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
import Element, { IObject3DMap } from './Element';
import IToolModel from '../../interface/IToolModel';

export default class State {

    /** 版本 */
    version = 0;

    /** 启动模式 */
    model: 'edit' | 'preview' = 'edit';

    /** canvas 容器 */
    cont?: HTMLDivElement | null;

    /** 轨道控制器 */
    controls?: OrbitControls;

    /** 摄像机 */
    camera?: THREE.PerspectiveCamera;

    /** 场景 */
    scene?: THREE.Scene;

    /** 地板 */
    floor?: THREE.Mesh<THREE.PlaneGeometry>;

    /** 渲染器 */
    renderer?: THREE.WebGLRenderer;

    /** 原件字典 */
    elementMap = new Map<string, Element<keyof IObject3DMap>>();

    /** 选中原件的UUID */
    selectedElementUuid?: string;

    /** 选中得工具 */
    selectedTool: ToolType = ToolType.摄像机;

    /** 工具数据 */
    toolData = new Map<ToolType, IToolModel>();
}
















